/*
 * @(#)PostalAddress.java
 * Date 2013-08-08
 * Version 1.0
 * Author Jim Horner
 * Copyright (c)2012
 */


package us.hornerscorners.lamppost.model.patient;

import java.util.ArrayList;
import java.util.List;
import org.codehaus.jackson.annotate.JsonIgnoreProperties;

import us.hornerscorners.lamppost.model.common.CodedElement;


/**
 *
 * @author jim
 *
 * <addr>
 *   <streetAddressLine>3727 Terry Lane</streetAddressLine>
 *   <city>ORLANDO</city>
 *   <state>FL</state>
 *   <postalCode>32801</postalCode>
 * </addr>
 *
 * AD
 *   AdxpDeliveryInstallationType.class,
 *   AdxpPrecinct.class,
 *   AdxpUnitID.class,
 *   AdxpCensusTract.class,
 *   AdxpDeliveryAddressLine.class,
 *   AdxpPostBox.class,
 *   AdxpDeliveryInstallationArea.class,
 *   AdxpDeliveryMode.class,
 *   AdxpHouseNumber.class,
 *   AdxpStreetNameType.class,
 *   AdxpDirection.class,
 *   AdxpPostalCode.class,
 *   AdxpStreetNameBase.class,
 *   AdxpDeliveryInstallationQualifier.class,
 *   AdxpBuildingNumberSuffix.class,
 *   AdxpCity.class,
 *   AdxpState.class,
 *   AdxpDelimiter.class,
 *   AdxpStreetAddressLine.class,
 *   AdxpUnitType.class,
 *   AdxpCountry.class,
 *   AdxpHouseNumberNumeric.class,
 *   AdxpCareOf.class,
 *   AdxpCounty.class,
 *   AdxpDeliveryModeIdentifier.class,
 *   AdxpStreetName.class,
 *   AdxpAdditionalLocator.class
 *
 */
@JsonIgnoreProperties(ignoreUnknown = true)
public class PostalAddress {

    /** Field description */
    private String city;

    /** Field description */
    private String country;

    /** Field description */
    private String county;

    /** Field description */
    private CodedElement purpose;

    /** Field description */
    private String state;

    /** Field description */
    private final List<String> streetLines;

    /** Field description */
    private String zipCode;

    /**
     * Constructs ...
     *
     */
    public PostalAddress() {

        super();

        this.streetLines = new ArrayList<>();
    }

    /**
     * Method description
     *
     *
     * @return
     */
    public String getCity() {
        return city;
    }

    /**
     * Method description
     *
     *
     * @return
     */
    public String getCountry() {
        return country;
    }

    /**
     * Method description
     *
     *
     * @return
     */
    public String getCounty() {
        return county;
    }

    /**
     * Method description
     *
     *
     * @return
     */
    public CodedElement getPurpose() {
        return purpose;
    }

    /**
     * Method description
     *
     *
     * @return
     */
    public String getState() {
        return state;
    }

    /**
     * Method description
     *
     *
     * @return
     */
    public List<String> getStreetLines() {
        return streetLines;
    }

    /**
     * Method description
     *
     *
     * @return
     */
    public String getZipCode() {
        return zipCode;
    }

    /**
     * Method description
     *
     *
     * @param city
     */
    public void setCity(String city) {
        this.city = city;
    }

    /**
     * Method description
     *
     *
     * @param country
     */
    public void setCountry(String country) {
        this.country = country;
    }

    /**
     * Method description
     *
     *
     * @param county
     */
    public void setCounty(String county) {
        this.county = county;
    }

    /**
     * Method description
     *
     *
     * @param purpose
     */
    public void setPurpose(CodedElement purpose) {
        this.purpose = purpose;
    }

    /**
     * Method description
     *
     *
     * @param state
     */
    public void setState(String state) {
        this.state = state;
    }

    /**
     * Method description
     *
     *
     * @param zipCode
     */
    public void setZipCode(String zipCode) {
        this.zipCode = zipCode;
    }
}
